import { specsCount, specsList } from "../../request/api";

const state = {
    list: [],
    total:0,
    size: 2,
    page: 1
}

const mutations = {
    changeList(state, arr) {
        state.list = arr
    },
    changeTotal(state, num) {
        state.total = num
    },
    changePage(state, num) {
        state.page = num
    }
}

const actions = {
    reqChangeList(context, flag) {
        // data有两种状态。一种是商品管理的{}，一种是specsList带分页的
        let data = flag ? {} : { size: context.state.size, page: context.state.page }
        specsList(data).then(res => {
            let list = res.data.list ? res.data.list : []
            // 这是第一个BUG解决方式
            if (list.length == 0 && context.state.page > 1) {
                context.commit('changePage', context.state.page - 1)
                context.dispatch("reqChangeList")
            }

            // 在给state.list赋值之前，要先处理一下，保证拿到的数据格式是你想要的
            list.forEach(item => {
                item.attrs = JSON.parse(item.attrs)
            })
            context.commit("changeList", list)
        })
    },
    // 请求列表总条数
    reqChangeTotal(context) {
        specsCount().then(res => {
            context.commit("changeTotal", res.data.list[0].total)
        })
    },
    // 修改当前页码数
    reqChangePage(context, num) {
        // 修改状态层的当前页码数
        context.commit("changePage", num)
        // 重新请求列表数据
        context.dispatch("reqChangeList")
    }
}

const getters = {
    list(state) {
        return state.list
    },
    total(state) {
        return state.total
    },
    size(state) {
        return state.size
    }
}

export default {
    state,
    mutations,
    actions,
    getters,
    namespaced: true
}